//******************************************************************
//******************************************************************
//**********          ANts Peer To Peer Sources        *************
//
// ANts P2P realizes a third generation P2P net. It protects your
// privacy while you are connected and makes you not trackable, hiding
// your identity (ip) and crypting everything you are sending/receiving
// from others.

// Copyright (C) 2004  Roberto Rossi

// This program is free software; you can redistribute it and/or
// modify it under the terms of the GNU General Public License
// as published by the Free Software Foundation; either version 2
// of the License, or (at your option) any later version.

// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
// GNU General Public License for more details.

// You should have received a copy of the GNU General Public License
// along with this program; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.

package ants.p2p.gui;

import java.awt.*;
import javax.swing.*;
import javax.swing.border.*;

import ants.p2p.*;

import com.borland.jbcl.layout.*;

import org.apache.log4j.*;
import java.awt.event.*;

import java.awt.Toolkit;
import java.awt.datatransfer.*;

public class StartUp extends JPanel {

  static Logger _logger = Logger.getLogger(StartUp.class.getName());

  Image buffer;
  JTextArea jTextArea1 = new JTextArea();
  TitledBorder titledBorder1;
  TitledBorder titledBorder2;
  XYLayout xYLayout1 = new XYLayout();
  JButton jButton1 = new JButton();
  JButton jButton2 = new JButton();
  JButton jButton3 = new JButton();


  public StartUp() {
    try {
      jbInit();
    }
    catch(Exception ex) {
      _logger.error("",ex);
    }
  }
  void jbInit() throws Exception {
    titledBorder1 = new TitledBorder("");
    titledBorder2 = new TitledBorder(BorderFactory.createEmptyBorder(),"");
    jTextArea1.setEditable(false);
    jTextArea1.setBackground(new Color(0,0,0,0));
    jTextArea1.setFont(new java.awt.Font("Monospaced", 0, 12));
    jTextArea1.setForeground(Color.darkGray);
    jTextArea1.setBorder(titledBorder2);
    jTextArea1.setText(ji.JI.i("ANts Peer To Peer - Release")+": "+Ant.getVersion()+"\n"+
                       ji.JI.i("Copyright (C) 2004 Roberto Rossi - Gwren")+"\n"+
                       ji.JI.i("ANts P2P comes with ABSOLUTELY NO WARRANTY;")+"\n"+
                       ji.JI.i("for details visit the GNU website http://www.gnu.org/.")+"\n"+
                       ji.JI.i("This is free software, and you are welcome")+"\n"+
                       ji.JI.i("to redistribute it under certain conditions;")+"\n"+
                       ji.JI.i("for details visit the GNU website http://www.gnu.org/.")+"\n\n"+
                       ji.JI.i("This sofware include the following code:")+"\n\n"+
                       "(GPL) PircBot ............ http://www.jibble.org\n"+
                       "(AL) Apache Log4j ........ http://logging.apache.org\n"+
                       "(AL) Lucene .............. http://jakarta.apache.org/lucene/\n"+
                       "(GPL) JCraft JZLib ....... http://www.jcraft.com/jzlib/\n"+
                       "(LGPL) LiquidLnF ......... http://sourceforge.net/projects/liquidlnf\n"+
                       "(BSD) NapkinLaF .......... http://sourceforge.net/projects/napkinlaf\n"+
                       "(BCL) BouncyCastle libs .. http://www.bouncycastle.org\n\n"+
                       "ANts website.............. http://www.myjavaserver.com/~gwren/home.jsp?page=custom&xmlName=ants");
    this.setLayout(xYLayout1);
    this.setForeground(Color.white);
    Toolkit tk = Toolkit.getDefaultToolkit();
    MediaTracker mt = new MediaTracker(this);
    buffer = tk.getImage(this.getClass().getClassLoader().getResource("anims/antsLogo.jpg"));
    mt.addImage(buffer, 1);
    try {
      mt.waitForAll();
    }
    catch (InterruptedException e) {}
    jButton1.setPreferredSize(new Dimension(150, 23));
    jButton1.setToolTipText(ji.JI.i("Access to the ANtsP2P tutorial, provided you have properly selected " +
    "a browser in the settings panel"));
    jButton1.setText(ji.JI.i("Tutorial"));
    jButton1.addActionListener(new StartUp_jButton1_actionAdapter(this));
    jButton2.setMinimumSize(new Dimension(77, 23));
    jButton2.setPreferredSize(new Dimension(150, 23));
    jButton2.setToolTipText(ji.JI.i("Open the browser selected in the settings pane pointing to the ANts " +
    "official website"));
    jButton2.setText(ji.JI.i("Web Site"));
    jButton2.addActionListener(new StartUp_jButton2_actionAdapter(this));
    jButton3.setMaximumSize(new Dimension(150, 23));
    jButton3.setMinimumSize(new Dimension(150, 23));
    jButton3.setPreferredSize(new Dimension(150, 23));
    jButton3.setToolTipText(ji.JI.i("Copy the location of the ANtsP2P official website to clipboard"));
    jButton3.setText(ji.JI.i("Copy Link Location"));
    jButton3.addActionListener(new StartUp_jButton3_actionAdapter(this));
    this.add(jTextArea1,      new XYConstraints(20, 140, -1, -1));
    this.add(jButton3,         new XYConstraints(450, 30, -1, -1));
    this.add(jButton2,     new XYConstraints(450, 60, -1, -1));
    this.add(jButton1,    new XYConstraints(450, 90, -1, -1));
  }

  public void paintComponent(Graphics g) {
    super.paintComponent(g);
    if (buffer != null){
      g.drawImage(buffer, 20, 20, this);
    }
  }

  void jButton3_actionPerformed(ActionEvent e) {
    Clipboard clipboard =
        Toolkit.getDefaultToolkit().getSystemClipboard();
    StringSelection data =
        new StringSelection("http://www.myjavaserver.com/~gwren/home.jsp?page=custom&xmlName=ants");
    clipboard.setContents(data, data);
  }

  void jButton2_actionPerformed(ActionEvent e) {
    String[] args = new String[1];
    try{
      args[0] = "http://www.myjavaserver.com/~gwren/home.jsp?page=custom&xmlName=ants";
      Runtime.getRuntime().exec(HttpAntPanel.browserPath +" "+ args[0]);
    }catch(Exception ex){
      JOptionPane.showMessageDialog(this, ji.JI.i("Not found: ")+HttpAntPanel.browserPath+"\n"+ji.JI.i("Please set your browser path in settings..."),ji.JI.i("Error in starting Browser"),JOptionPane.ERROR_MESSAGE);
      _logger.error("Error in starting: "+HttpAntPanel.browserPath+" "+args[0],ex);
    }
  }

  void jButton1_actionPerformed(ActionEvent e) {
    String[] args = new String[1];
    try{
      args[0] = "http://antsp2p.sourceforge.net/antsp2phelp/Default.htm";
      Runtime.getRuntime().exec(HttpAntPanel.browserPath +" "+ args[0]);
    }catch(Exception ex){
      JOptionPane.showMessageDialog(this, ji.JI.i("Not found: ")+HttpAntPanel.browserPath+"\n"+ji.JI.i("Please set your browser path in settings..."),ji.JI.i("Error in starting Browser"),JOptionPane.ERROR_MESSAGE);
      _logger.error("Error in starting: "+HttpAntPanel.browserPath+" "+args[0],ex);
    }
  }
}

class StartUp_jButton3_actionAdapter implements java.awt.event.ActionListener {
  StartUp adaptee;

  StartUp_jButton3_actionAdapter(StartUp adaptee) {
    this.adaptee = adaptee;
  }
  public void actionPerformed(ActionEvent e) {
    adaptee.jButton3_actionPerformed(e);
  }
}

class StartUp_jButton2_actionAdapter implements java.awt.event.ActionListener {
  StartUp adaptee;

  StartUp_jButton2_actionAdapter(StartUp adaptee) {
    this.adaptee = adaptee;
  }
  public void actionPerformed(ActionEvent e) {
    adaptee.jButton2_actionPerformed(e);
  }
}

class StartUp_jButton1_actionAdapter implements java.awt.event.ActionListener {
  StartUp adaptee;

  StartUp_jButton1_actionAdapter(StartUp adaptee) {
    this.adaptee = adaptee;
  }
  public void actionPerformed(ActionEvent e) {
    adaptee.jButton1_actionPerformed(e);
  }
}
